#ifndef CIGEOM_POLYGONMESH_H
#define CIGEOM_POLYGONMESH_H

#include "Geometry.h"

namespace CIGeom {
    /**
     * This class represents a polygon mesh      
     **/
    class PolygonMesh : public Geometry {   

    public:             
        PolygonMesh (const char* n);               //Constructor
        PolygonMesh (const std::string& n);        //Constructor        
        virtual ~PolygonMesh ();                   //Destructor

    public:             
        //Utility Methods
        virtual void Render (unsigned int selectionMode);   //Virtual Method called to render the 

        virtual void LoadNames();                           //Virtual Method called to load the names that identify this geometry in the OpenGL names stack
        virtual int GetNumberOfNames();                     //Virtual Method called to get the number of names that identify this geometry 

        virtual void LoadFacesNames();                      //Virtual Method called to load the faces names in the OpenGL names stack
        virtual void LoadVerticesNames();                   //Virtual Method called to load the vertices names in the OpenGL names stack

        virtual void SaveAsCI3D (std::ofstream& out);       //Virtual Method called to save a description of this geometry within an output stream
    };             

}
#endif /* CIGEOM_POLYGONMESH_H */
